﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////


#pragma once
#include "GnufBase.h"
#include "WeakReferenceable.h"

namespace gnuf {

    class IAssetDisplay;
    class IDisplayManager;

    class GNUF_BASE_EXPORT IProjectDisplay : public gcmp::WeakReferenceable
    {
        DEFINE_CAST_BASE(IProjectDisplay)
    protected:
        explicit IProjectDisplay();
        virtual ~IProjectDisplay();
    public:
        virtual IDisplayManager * onGetDisplayManager() const = 0;
        virtual void onClose() = 0;
        virtual void onActivate() = 0;
        virtual void onDeactivate() = 0;
        virtual bool onIsActive() const = 0;
        virtual void onSetTabIds(const std::vector<std::string> &) = 0;
        virtual const std::vector<std::string> & onGetTabIds() const = 0;
        virtual size_t onGetNumberOfAssetDisplays() const = 0;
        virtual IAssetDisplay * onGetAssetDisplayById(const std::string &) = 0;
        virtual IAssetDisplay * onGetActiveAssetDisplay() = 0;
        virtual std::list<IAssetDisplay *> onGetAllAssetDisplays() = 0;

        virtual const std::wstring & onGetCaption() const = 0;
    };
    
}
